import subprocess
import os  
import re

def print_current_directory():
    # 获取当前工作目录
    current_path = os.getcwd()
    print(f"当前路径: {current_path}")

def run_pylint(file_path):  
    # pylint 命令和参数
    # (C) 惯例。违反了编码风格标准
    # (R) 重构。写得非常糟糕的代码。
    # (W) 警告。某些Python特定的问题。
    # (E) 错误。很可能是代码中的错误。
    # (F) 致命错误。阻止Pylint进一步运行的错误。  
    pylint_command = ['pylint', file_path] 
    # pylint_command = ['pylint', '--disable=all', '--enable=C', file_path]
    # pylint_command = ['pylint', '--disable=all', '--enable=R', file_path]
    # pylint_command = ['pylint', '--disable=all', '--enable=W', file_path]
    # pylint_command = ['pylint', '--disable=all', '--enable=E', file_path]
    # pylint_command = ['pylint', '--disable=all', '--enable=F', file_path]
    
    # 使用 subprocess.run 来执行 pylint 命令   
    pylint_result = subprocess.run(pylint_command, capture_output=True, text=True)  
  
    # 如果 pylint 返回了非零退出码，说明有错误或警告  
    if pylint_result.returncode != 0: 
        results = [line for line in pylint_result.stdout.split('\n') if line.startswith(file_name)]
        if len(results)!=0:
            for result in results:
                parts = result.split(':')
                line = parts[1]
                column = parts[2]
                error_code = parts[3]
                description = parts[4]
                description = re.sub(r'\(.*?\)', '', description, flags=re.S)
                print(f"第{line}行, 第{column}列, 问题编号:{error_code},问题: {description}")
    else:
        print("您的代码这方面没有问题")

  
# 使用示例  
# print_current_directory()  # 先输出当前路径
file_name = 'check.py'
run_pylint(file_name)